package com.sofa.user.service;

import com.sofa.common.domain.PageResult;
import com.sofa.user.domain.dto.UserDTO;
import com.sofa.user.domain.po.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sofa.user.domain.vo.UserVO;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author author
 * @since 2025-06-12
 */
public interface IUserService extends IService<User> {
    /**
     * 用户注册
     *
     * @param userDTO 用户信息(用户名、密码、邮箱、手机号)
     * @return
     * @throws RuntimeException 当用户名已存在时抛出异常
     */
    Boolean register(UserDTO userDTO);

    /**
     * 用户登录
     * @param username 用户名
     * @param password 密码
     * @return 登录成功的用户信息
     * @throws RuntimeException 当用户不存在或密码错误时抛出异常
     */
    UserVO login(String username, String password);


    /**
     * 重置用户密码
     *
     * @param userId 用户ID
     * @return
     */
    Boolean resetPassword(Long userId);

    /**
     * 获取用户列表
     * @return 用户列表
     */
    PageResult<UserVO> getUsers(Integer page, Integer pageSize);

    /**
     * 根据id获取用户信息
     * @param userId
     * @return
     */
    UserVO getUserById(Long userId);

    Boolean upgradeToAdmin(Long userId);

    Boolean downgradeToUser(Long userId);

    Boolean updateUserById(User user);
}
